Modified license key entry for pre-installation of software

ABSTRACT

A method and computer system according to the disclosed invention allows the pre-installation of a software application without a license key. The computer system installs a software application and provides a prompt for a license key. The license key is stored in a registry. If the license key is not entered, the computer system installs the software application and installs disabling code. At startup, the code is executed if installed, providing a prompt for a license key. If the proper license key is entered, the computer system stores the key in a registry and uninstalls the disabling code, allowing installation of the software application. If an improper key is entered, the computer system allows the key to be reentered.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to pre-installation of software, and morespecifically to modifying the software to allow for a License Key to beentered after the installation of the software but before the executionof the software.

2. Description of the Related Art

Computers are becoming increasingly important in many aspects of life,including homes and businesses. As computers become more important, moreadvances in computer capabilities are discovered. Previously, computersystems sold by computer hardware manufactures were often sold with few,if any, software applications pre-installed. The end-user had theresponsibility to purchase the desired software applications. After thepurchase, the end-user would install the software on the computersystem. The installation process often required the end-user to enterdetails concerning the physical embodiment of the computer system,including the make and model of peripheral devices. This interactionoften caused difficulties for the end-user who was not familiar withcomputer terminology or with the specific computer system.

Through the combined efforts of the computer system providers and thesoftware providers, computer systems containing a substantial number ofsoftware applications, pre-installed on the computer system, have becomeavailable through standard retailers. This has allowed the end-user, whomay have few computer skills, to purchase a computer system which can beutilized with little user know-how. However, this change in themarketing of the computer systems has added to the growing problem ofcomputer software pirating.

One problem that has plagued software providers for years is softwarepirating. Software pirating is the unauthorized copying of the computersoftware or associated software documentation. Software piratinggenerally occurs in two distinct forms. The first is software piratingby an unlicensed user. The unlicensed user “borrows” a copy of asoftware application from an acquaintance or from their employer. Thesoftware is then copied, allowing the unlicensed user to keep a copy ofthe software application while returning the original to the legallicensee. The second type of software pirating occurs when an individualor business copies a software application intending on selling thepirated software application. Software providers have combated piratingby including license key or registry information prompts in theinstallation software. Typically, the installation software prompts theend-user to enter a license key, provided by the software providerseparate from the software, before installation of the software isinitiated. If the license key is not provided, the software cannot beinstalled.

This, however, contradicts the objective accomplished by providing thesoftware pre-installed on the computer systems. Computer system hardwareand software providers desire efficient processes to pre-install thesoftware without losing the inherent protection of license keys.

Typically, the pre-installed software applications provided on thecomputer systems either do not include license key protection or thesoftware is partially installed, requiring the end-user to complete theinstallation process. An example of this is when a software applicationis included on the computer system, but the software is present only ina compressed form. During final installation, the install program asksfor a license key, then decompresses the software and installs thedecompressed software application. Neither of these solutions fullysatisfies both the computer hardware and the software providers.Therefore, advancement in the ability to pre-install software on acomputer system while maintaining software protection is desirable.

SUMMARY OF THE INVENTION

A method and computer system according to the disclosed invention allowsthe pre-installation of a software application without a license key.The computer system installs the software application and provides aprompt for a license key. The license key can be entered at this time,if so, the key is stored in the registry. The license key is generallyprovided by the software provider with the software applicationdocumentation. If the license key is not entered, the computer systeminstalls the software application and installs disabling code. Thedisabling code is executable at startup. An advantage is that thecomputer system manufacturer can install the software application,relieving the end-user from this task.

At startup, the disabling code is executed, if installed, determining ifa license key is stored in the registry before providing a prompt for alicense key if no key is stored in the registry. If a proper license keyis entered, the computer system stores the key in the registry andun-installs the disabling code. If an improper key is entered, thecomputer system allows a key to be reentered or the disabling code isexited.

The software application can be executed by the user. When the softwareapplication is executed, the computer system determines if a license keyfor the software application is stored in the registry. If a license keyfor the software application is stored in the registry, the softwareapplication is run. If no license key for the software application isstored in the registry, the computer system provides a prompt for thekey. If a proper key is entered, the computer system stores the licensekey in the registry and runs the software application. If an improperkey is entered, the computer system prompts for a license key. Thesoftware application can be installed such that execution occursautomatically with startup. However, license key verification occurs aspreviously discussed.

BRIEF DESCRIPTION OF THE DRAWINGS

A better understanding of the present invention can be obtained when thefollowing detailed description of the preferred embodiment is consideredin conjunction with the following drawings, in which:

FIG. 1 is a block diagram of typical computer system according to thepresent invention;

FIG. 2 is a flow chart of the license key entry and registration processas disclosed in the prior art;

FIGS. 3A-3B are a flow chart of the installation process of a softwareapplication according to the invention;

FIGS. 4A-4B are a flow chart of the startup execution of the installedsoftware application according to the invention;

FIG. 5 is a flow chart of the execution of the installed softwareapplication according to the invention;

FIG. 6 is a diagram of the license key prompt as provided during theinstallation process;

FIG. 7 is a diagram of the license key prompt as provided duringexecution of the software after installation;

FIG. 8 is a diagram of the warning prompt as provided after an improperlicense key is entered during the execution of the software; and

FIG. 9 is a diagram of the wrong key warning and prompt as providedduring the installation process, the startup process, and the executionof the software after installation process.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

Turning to FIG. 1, illustrated is a typical computer system Simplemented according to the invention. While this system isillustrative of one embodiment, the techniques according to theinvention can be implemented in a wide variety of systems. The computersystem S in the illustrated embodiment is a PCI bus/ISA bus-basedmachine, having a peripheral component interconnect (PCI) bus 10 and anindustry standard architecture (ISA) bus 12. The PCI bus 10 iscontrolled by PCI controller circuitry located within amemory/accelerated graphics port (AGP)/PCI controller 14. Thiscontroller 14 (the “host bridge”) couples the PCI bus 10 to a processorsocket 16 via a host bus, an AGP connector 18, a memory subsystem 20,and an AGP 22. A second bridge circuit, a PCI/ISA bridge 24 (the “ISAbridge”) bridges between the PCI bus 10 and the ISA bus 12.

The host bridge 14 in the disclosed embodiment is a 440LX IntegratedCircuit by Intel Corporation, also known as the PCI AGP Controller(PAC). The ISA bridge 24 is a PIIX4, also by Intel Corporation. The hostbridge 14 and ISA bridge 24 provide capabilities other than bridgingbetween the processor socket 16 and the PCI bus 10, and the PCI bus 10and the ISA bus 12. Specifically, the disclosed host bridge 14 includesinterface circuitry for the AGP connector 18, the memory subsystem 20,and the AGP 22. A video display 82 can be coupled to the AGP connector18 for display of data by the computer system S. The ISA bridge 24further includes an internal enhanced IDE controller for controlling upto four enhanced IDE drives 26, and a universal serial bus (USB) hostcontroller 25 for controlling USB ports 28 in accordance with thepresent invention.

The host bridge 14 is preferably coupled to the processor socket 16,which is preferably designed to receive a Pentium II processor module30, which in turn includes a microprocessor core 32 and a level two (L2)cache 34. The processor socket 16 could be replaced with processorsother than the Pentium II without detracting from the spirit of theinvention.

The host bridge 14, when the Intel 440LX Host Bridge is employed,supports a memory subsystem 20 (or main memory) of extended data out(EDO) dynamic random access memory (DRAM) or synchronous DRAM (SDRAM), a64/72-bit data path memory, a maximum memory capacity of one gigabyte,dual inline memory module (DIMM) presence detect, eight row addressstrobe (RAS) lines, error correcting code (ECC) with single and multiplebit error detection, read-around-write with host for PCI reads, and 3.3volt DRAMs. The host bridge 14 support up to 66 megahertz DRAMs, whereasthe processor socket 16 can support various integral and nonintegralmultiples of that speed.

The ISA bridge 24 also includes enhanced power management. It supports aPCI bus at 30 or 33 megahertz and an ISA bus 12 at ¼ of the PCI busfrequency. PCI revision 2.1 is supported with both positive andsubtractive decode. The standard personal computer input/output (I/O)functions are supported, including a direct memory access (DMA)controller, two 82C59 interrupt controllers, an 8254 timer, a real timeclock (RTC) with a 256 byte complementary metal oxide semiconductor(CMOS) static RAM (SRAM), and chip selects for system read only memory(ROM), RTC, keyboard controller, an external microcontroller, and twogeneral purpose devices. The enhanced power management within the ISAbridge 24 includes full clock control, device management, suspend andresume logic, advanced configuration and power interface (ACPI), andsystem management bus (SMBus) control, which is based on theinter-integrated circuit (I²C) protocol.

The PCI bus 10 couples a variety of devices that generally takeadvantage of a high-speed data path. This includes a small computersystem interface (SCSI) controller 36, with both an internal port 38 andan external port 40. In the disclosed embodiment, the SCSI controller 36is an AIC-7860 SCSI controller. The external port 40 can be attached tomass storage subsystems, such as a hard disk drive or a tape drive. Alsocoupled to the PCI bus 10 is a network interface controller (NIC) 42,which preferably supports the ThunderLan™ power management specificationby Texas Instruments. The NIC 42 is coupled through a physical layer 44and a filter 46 to a RJ-45 jack 48, and through a filter 50 to an AUIjack 52.

Between the PCI Bus 10 and the ISA Bus 12, an ISA/PCI backplane 54 isprovided which include a number of PCI and ISA slots. This allows ISAcards or PCI cards to be installed into the system for addedfunctionality.

Further coupled to the ISA Bus 12 is an enhanced sound system chip (ESS)56, which provides sound management through an audio in port 58 and anaudio out port 60. The ISA bus 12 also couples the ISA bridge 24 to aSuper I/O chip 62, which in the disclosed embodiment is a NationalSemiconductor Corporation PC87307VUL device. The Super I/O 62 containsseveral logical devices, one of which is a Real Time Clock (RTC).Resident in the RTC of the Super I/O chip 62 is non-volatile RandomAccess Memory (NV RAM) 63. This Super I/O chip 62 provides a variety ofinput/output functionality, including a parallel port 64, an infraredport 66, a keyboard controller for a keyboard 68, a mouse port for amouse 70, additional series ports 72, a CD-ROM controller for a CD-ROMdrive 84, and a floppy disk drive controller for a floppy disk drive 74.These devices are coupled through connectors to the Super I/O 62.Resident on the keyboard 68 are light emitting diodes (LEDs) 69. Thefloppy disk drive 74 includes disk drives for a 3½″ and 5¼″ floppy disksand Advanced Technology Attachment Packet Interface (ATAPI) drives,including the LS-120 drives.

The CD-ROM drive 84 of the disclosed embodiment is a standard 16x speedCD-ROM, however, varying speed CD-ROM drives could be implementedwithout detracting from the spirit of the invention. The CD-ROMs for usewith the CD-ROM drive 84 include, but are not limited to, CD-ROMscontaining software applications and the associated softwareinstallation applications. CD-ROMs can be used to install softwareapplications on the computer system S.

The ISA bus 12 is also coupled through bus transceivers 76 to a flashROM 78, which can include both basic input/output system (BIOS) code forexecution by the processor 32, as well as an additional code forexecution by microcontrollers in a ROM-sharing arrangement. An exemplaryBIOS according to the invention is shown below.

The ISA bus 12 further couples the ISA bridge 24 to a security, power,ACPI, and miscellaneous application specific integrated circuit (ASIC)80, which provides a variety of miscellaneous functions for the system.The ASIC 80 includes security features, system power control, lightemitting diode (LED) control, a PCI arbiter, remote wake up logic,system fan control, hood lock control, ACPI registers and support,system temperature control, and various glue logic. The ISA bus 12 isalso coupled to a modem 86. The modem 86 contains connectors which canbe implemented to connect the computer system S to an external network.The modem 86 can be used to load software applications and softwareinstallation programs on to the computer system S.

Turning now to FIG. 2, a flow chart of the license key entry andregistration process as disclosed in the prior art is shown. The processbegins with step 200, start. Next, in step 202, installation of thesoftware begins. A license key prompt is provided and a license key isentered in step 204. The license key is compared in step 206. Thelicense key can be compared with data contained in a table resident onthe installation software media. Also, the license key that is enteredcan be compared using a solution algorithm resident in the installationsoftware. The solution algorithm uses the license key as an input intothe algorithm; then the output determined from the algorithm is comparedto see if it falls within the allowed parameters as set by the softwareprovider. If the output is within the parameters, then the license keyis a proper license key and is accepted. Next, in step 208, the licensekey is determined using the comparison process as discussed above. Ifthe license key is not proper, the process continues with step 210,where the installation is discontinued and the process ends. If the keylicense is proper, as determined above, the process continues with step212 where the installation is continued and completed. Next in step 214,the license key entered is placed in a registry. The license key and theuser name, if entered, are stored to identify this software applicationwith that license key and user. The process ends in step 216.

Turning now to FIGS. 3A-3B, a flow chart of the installation process ofa software application is shown. The process begins with step 300,start, in FIG. 3A. Next, in step 302, the computer system S isinitialized. This can be accomplished by cycling power, which is oftencalled a hard or cold boot, or by performing a soft or warm boot. A softor warm boot is often implemented as the pressing of the ctrl-del-altkeys, simultaneously, on the keyboard 68. Next, in step 304, thecomputer system S initializes the CD-ROM drive 84. After the CD-ROM 84is initialized, the computer system S can access data contained on theCD-ROM disk placed in the CD-ROM drive 84. Next, the computer system Sexecutes the installation executable code of the CD-ROM disk in step306. In step 308, the computer system S provides a prompt for thelicense key (see FIG. 6) of the software application that is beinginstalled. The computer system then monitors to see if license key isentered in step 310. If no license key is entered, the computer system Sprovides a warning prompt in step 324. An exemplary copy of the warningprompt is provided in FIG. 8. After the warning prompt has beenacknowledged, the computer system S activates the Run-Once code in step314 in FIG. 3B. In this embodiment, a Run-Once code is activated suchthat the code disclosed in FIGS. 4A-4B is executed during computersystem initiation. However, alternative embodiments, includingembodiments adding or removing programs from the Run-Once entry could beimplemented without detracting from the spirit of the invention. If alicense key is entered in step 310, the computer system S determines ifthe license key entered is a proper key in step 312. If the license keythat was entered was a proper license key, the computer system S storesthe entered license key in the registry in step 322 in FIG. 3B. If thelicense key that is entered is not a proper license key the computersystem S provides a wrong license key warning and prompt in step 326.The wrong license key warning and prompt provides that a license key wasentered but is not a valid license key as determined by the processdiscussed in FIG. 2. An exemplary copy of the wrong license key warningand prompt is provided in FIG. 9. Next, computer system S monitors ifthe user wishes to re-enter a license key in step 328. If the userwishes to re-enter a license key, the computer system returns to step310 and monitors if the license key has been entered. If the user doesnot wish to re-enter the license key, the computer system S proceeds tostep 314 in FIG. 3B and activates the Run-Once code. After the validlicense key has been stored in the registry in step 322 or the Run-Oncecode has been activated in step 314, the computer system S continueswith the installation of the software application in step 316. After theinstallation of the software application, the process ends at step 320.

Turning now to FIGS. 4A-4B, a flow chart of the startup execution of theinstalled software application is shown. The process begins with step400, start, in FIG. 4A. Next, in step 402, the computer system S isinitialized. Next, in step 404, the Run-Once program that was activatedin FIGS. 3A-3B, is executed as part of the start-up procedure which is amechanism contained within the operating system. Next, in step 407, thecomputer system determines if the license key for the softwareapplication is stored in the registry. If the license key is stored inthe registry, the computer system S proceeds to step 426 in FIG. 4B andcontinues execution of the software application. If the license key isnot stored in the registry, the computer system S provides a prompt forthe license key in step 410. An exemplary diagram of the prompt forlicense key during the startup execution process is provided in FIG. 7.After the prompt is provided in step 410, the computer system Sdetermines if a license key has been entered in step 412. If no licensekey has been entered, the computer system S provides a warning prompt instep 414. An exemplary copy of the warning prompt is provided in FIG. 8.The process in step 428 in FIG. 4B. Once a key has been entered in step412, the computer system S determines if the license key entered is aproper license key in step 418.

If a proper key is not entered in step 418, the computer system Sprovides a valid wrong license key warning and prompt in step 420. Thewrong license key warning and prompt provides that a license key wasentered but is not a valid license key as determined by the processdiscussed in FIG. 2. An exemplary copy of the wrong license key warningand prompt is provided in FIG. 9. Then computer system S monitors if theuser wishes to re-enter a license key in step 430. If the user wishes tore-enter a license key, the computer system returns to step 412 andmonitors if a license key has been entered. If the user does not wish tore-enter a license key, the computer system S proceeds to step 428 andthe process ends. If a proper license key is entered in step 418, thecomputer system S continues with step 422 in FIG. 4B and stores thelicense key in the registry. Then the software application is executedin step 426 before the process ends in step 430. The Run-Once program isexecuted only on the initial startup after the software application isinstalled (as shown in FIGS. 3A-3B). The installed software applicationcan be implemented such that the software application is executed whenselected by the user, as compared to automatic execution at startup,without detracting from the spirit of the invention.

Turning next to FIG. 5, a flow chart of the execution of the installedsoftware application is shown. The process begins with step 500, start.Next, in step 502, the software application is executed. The computersystem S determines if the license key for the software application isstored in the registry in step 504. If the license key is stored in theregistry, the computer system S runs the software application in step514. If the license key is not stored in the registry, the computersystem S provides a prompt for the license key in step 506. Next, instep 508, the computer system S determines if a license key has beenentered. If no license key has been entered, the computer system Sprovides a warning prompt in step 518. An exemplary copy of the warningprompt is provided in FIG. 8. After the warning prompt has beenacknowledged, the computer system S ceases execution of the softwareapplication in step 522 before ending the process in step 516. If alicense key is entered, the computer system S determines if enteredlicense key is a proper license key in step 510. If the license key isnot a proper license key, the computer system S provides a wrong licensekey warning and prompt in step 520. The wrong license key warning andprompt provides that a license key was entered but is not a validlicense key. Then computer system S monitors if the user wishes tore-enter a license key in step 524. If the user wishes to re-enter alicense key, the computer system returns to step 508 and monitors if alicense key has been entered. If the user does not wish to re-enter alicense key, the computer system S proceeds to step 526 and ceasesexecution of the software application before ending the process in step516. If a proper license key is entered, the computer system S storesthe license key in the registry in step 512. Next the computer system Sruns the software application in step 514. The process ends with step516.

Turning next to FIGS. 6, 7, 8, and 9, exemplary diagrams of the licensekey prompts are provided. In FIG. 6, the license key prompt 600 that isprovided during the installation process is shown. The license keyprompt allows the user to enter a license key and then designate, with“okay” or “cancel”, whether or not the user wishes to continue with theprocess of entering the license key. In FIG. 7, the license key prompt700 used during the startup execution of the software application isshown. The prompt allows the user to enter the license key found in theseparate license documentation provided with the software application.The license key prompt 700 allows the user to enter the license key andthey select “okay” to enter that license key or “cancel” to exit thesoftware application. In FIG. 8, the warning prompt 800 that is usedduring the startup execution process of the software application isshown. The warning prompt 800 explains that a license key must beentered and that the software application will not function without alicense key. The warning prompt 800 also explains that the license keyentry process can be restarted by executing the run-once executable.Otherwise the license key prompt will not appear until windows isre-entered, or the computer system S is rebooted. The warning prompt 800only allows the user to select an acknowledgement of the warning oflicense key prompt 800. In FIG. 9, the wrong key warning and prompt 900is shown. The wrong key warning and prompt 900 allows the user todesignate, with “okay” or “cancel”, whether or not the user wishes tore-enter another license key.

The foregoing disclosure and description of the invention areillustrative and explanatory thereof, and various changes to the size,shape, materials, components, circuit elements, wiring connections andcontacts, as well as in the details of the illustrated circuitry andconstruction and method of operation may be made without departing fromthe spirit of the invention.

What is claimed is:
 1. A computer system for allowing the pre-installation and operation of a software application without entering a key, the computer system comprising: a processor; a mass storage subsystem coupled to the processor; a data transfer device coupled to the processor; the data transfer device for outputting the software application to the computer system; and installation and operating software code residing in a data transfer media, the installation and operating software code, when executed by the processor, performing the steps of: executing the startup code, further comprising the steps of: upon execution of the startup code, determining if a key is stored in the registry; if the key is not stored in the registry, providing a user discernable prompt, the user discernable prompt requesting a key entry; determining if a proper key has been entered; the proper key has been entered, storing the key in the registry; executing the software application, further comprising the steps of: upon execution of the software application, determining if the key is stored in the registry; if the key is stored in the registry, continue execution of the program; if the key is not stored in the registry providing a user discernable prompt; the user discernable prompts requesting a key entry; determining if the proper key has been entered; if the proper key has not been entered, ceasing execution of the software application; and if the proper key has been entered, storing the key in the registry and continue execution of the program.
 2. The computer system of claim 1, wherein the step of providing the user discernable prompt includes providing a visual user prompt.
 3. The computer system of claim 1, wherein the step of providing the visual user prompt includes providing an indication on a computer screen.
 4. The computer system of claim 1, wherein the step of determining if a proper key has been entered includes comparing the key entry with a defined set of proper keys.
 5. The computer system of claim 1, wherein the step of determining if the proper key has been entered includes comparing the key entry with an algorithmic solution.
 6. The computer system of claim 1, wherein the data transfer device is a removable media device.
 7. The computer system of claim 1, wherein the data transfer device is a modem; the modem for receiving software applications.
 8. The computer system of claim 1, wherein the data transfer device is a CD-ROM drive.
 9. The computer system of claim 1, wherein the mass storage subsystem is a hard disk drive.
 10. A computer system for allowing the pre-installation and operation of a software application without entering a key, the computer system comprising: a processor; a mass storage subsystem coupled to the processor; a data transfer device coupled to the processor; the data transfer device for outputting the software application to the computer system; and a software code residing in a data transfer media, the software code including a startup code and a software application, the software code when executed by the processor adapted to perform the steps at start up of: determining if the key is stored in a registry; if the key is not stored in the registry, providing a user discernable prompt, the user discernable prompt requesting a key entry; determining if the key entry is a proper key; and if the key entry is the proper key, storing the key entry in the registry; the software code when executed by the processor adapted to perform the steps during execution of the software application of: determining if the key entry is stored in the registry; if the key entry is stored in the registry, continue execution of the software application; if the key entry is not stored in the registry, providing a user discernable prompt, the user discernable prompts requesting the key entry; determining if the key entry is the proper key; if the key entry is not the proper key, ceasing execution of the software application; and if the key entry is the proper key, storing the key entry in the registry and continue executing the software application. 